Skip to content

PivotGrid - KBN - Add ARIA attributes to area fields#34341

Open
aleksei-semikozov wants to merge 4 commits into
DevExpress:mainfrom
aleksei-semikozov:pivotgrid-kbn-fields-aria-attrs-main
Open

PivotGrid - KBN - Add ARIA attributes to area fields#34341
aleksei-semikozov wants to merge 4 commits into
DevExpress:mainfrom
aleksei-semikozov:pivotgrid-kbn-fields-aria-attrs-main

Conversation

@aleksei-semikozov

Copy link
Copy Markdown
Contributor

No description provided.

@aleksei-semikozov aleksei-semikozov self-assigned this Jul 16, 2026
@aleksei-semikozov
aleksei-semikozov marked this pull request as ready for review July 16, 2026 15:19
@aleksei-semikozov
aleksei-semikozov requested review from a team as code owners July 16, 2026 15:19
Copilot AI review requested due to automatic review settings July 16, 2026 15:19

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR enhances PivotGrid (and the PivotGrid Field Chooser) keyboard-navigation accessibility by exposing area field containers as menubars and individual fields as menu items with localized ARIA labels, plus accompanying unit/e2e coverage.

Changes:

  • Update PivotGrid FieldsArea markup to conditionally expose populated areas as a labelled menubar while keeping empty areas presentational.
  • Add per-field role="menuitem" and computed aria-label that reflects caption + sort/header-filter state.
  • Add new localization message keys and extend QUnit/Jest/TestCafe coverage for the updated ARIA semantics.

Reviewed changes

Copilot reviewed 43 out of 43 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
packages/devextreme/testing/tests/DevExpress.ui.widgets.pivotGrid/pivotGrid.markup.tests.js Updates accessibility markup assertions for menubar behavior and empty filter-area behavior.
packages/devextreme/js/localization/messages/ar.json Adds new PivotGrid ARIA message keys.
packages/devextreme/js/localization/messages/bg.json Adds new PivotGrid ARIA message keys.
packages/devextreme/js/localization/messages/ca.json Adds new PivotGrid ARIA message keys.
packages/devextreme/js/localization/messages/cs.json Adds new PivotGrid ARIA message keys.
packages/devextreme/js/localization/messages/da.json Adds new PivotGrid ARIA message keys.
packages/devextreme/js/localization/messages/de.json Adds new PivotGrid ARIA message keys.
packages/devextreme/js/localization/messages/el.json Adds new PivotGrid ARIA message keys.
packages/devextreme/js/localization/messages/en.json Adds new PivotGrid ARIA message keys.
packages/devextreme/js/localization/messages/es.json Adds new PivotGrid ARIA message keys.
packages/devextreme/js/localization/messages/fa.json Adds new PivotGrid ARIA message keys.
packages/devextreme/js/localization/messages/fi.json Adds new PivotGrid ARIA message keys.
packages/devextreme/js/localization/messages/fr.json Adds new PivotGrid ARIA message keys.
packages/devextreme/js/localization/messages/hi.json Adds new PivotGrid ARIA message keys.
packages/devextreme/js/localization/messages/hu.json Adds new PivotGrid ARIA message keys.
packages/devextreme/js/localization/messages/it.json Adds new PivotGrid ARIA message keys.
packages/devextreme/js/localization/messages/ja.json Adds new PivotGrid ARIA message keys.
packages/devextreme/js/localization/messages/ko.json Adds new PivotGrid ARIA message keys.
packages/devextreme/js/localization/messages/lt.json Adds new PivotGrid ARIA message keys.
packages/devextreme/js/localization/messages/lv.json Adds new PivotGrid ARIA message keys.
packages/devextreme/js/localization/messages/nb.json Adds new PivotGrid ARIA message keys.
packages/devextreme/js/localization/messages/nl.json Adds new PivotGrid ARIA message keys.
packages/devextreme/js/localization/messages/pl.json Adds new PivotGrid ARIA message keys.
packages/devextreme/js/localization/messages/pt.json Adds new PivotGrid ARIA message keys.
packages/devextreme/js/localization/messages/pt-PT.json Adds new PivotGrid ARIA message keys.
packages/devextreme/js/localization/messages/pt-BR.json Adds new PivotGrid ARIA message keys.
packages/devextreme/js/localization/messages/ro.json Adds new PivotGrid ARIA message keys.
packages/devextreme/js/localization/messages/ru.json Adds new PivotGrid ARIA message keys.
packages/devextreme/js/localization/messages/sl.json Adds new PivotGrid ARIA message keys.
packages/devextreme/js/localization/messages/sv.json Adds new PivotGrid ARIA message keys.
packages/devextreme/js/localization/messages/tr.json Adds new PivotGrid ARIA message keys.
packages/devextreme/js/localization/messages/uk.json Adds new PivotGrid ARIA message keys.
packages/devextreme/js/localization/messages/vi.json Adds new PivotGrid ARIA message keys.
packages/devextreme/js/localization/messages/zh.json Adds new PivotGrid ARIA message keys.
packages/devextreme/js/localization/messages/zh-tw.json Adds new PivotGrid ARIA message keys.
packages/devextreme/js/localization/messages/zh-Hans.json Adds new PivotGrid ARIA message keys.
packages/devextreme/js/localization/messages/zh-CN.json Adds new PivotGrid ARIA message keys.
packages/devextreme/js/__internal/grids/pivot_grid/fields_area/m_fields_area.ts Implements conditional menubar exposure for populated PivotGrid field areas and presentational markup for empty areas.
packages/devextreme/js/__internal/grids/pivot_grid/field_chooser/m_field_chooser.ts Applies conditional menubar role + aria-label to FieldChooser area containers only when fields are present.
packages/devextreme/js/__internal/grids/pivot_grid/field_chooser/m_field_chooser_base.ts Sets role="menuitem" and computed aria-label on rendered field items.
packages/devextreme/js/__internal/grids/pivot_grid/field_chooser/a11y.ts Introduces helper for composing localized field aria-labels with sort/filter state.
packages/devextreme/js/__internal/grids/pivot_grid/field_chooser/a11y.test.ts Adds Jest coverage for aria-label composition logic.
e2e/testcafe-devextreme/tests/common/pivotGrid/kbn/fields.ts Adds E2E assertions for menubar/menuitem roles and composed field aria-labels.

Copilot AI review requested due to automatic review settings July 16, 2026 16:14

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 43 out of 43 changed files in this pull request and generated no new comments.

Copilot AI review requested due to automatic review settings July 17, 2026 10:39
@aleksei-semikozov
aleksei-semikozov requested review from vladaskorohodova and removed request for Copilot July 17, 2026 10:39
@sjbur

sjbur commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

Bug: stale role="menubar"/aria-label after hiding a field area

FieldsArea._renderTableContent (fields_area/m_fields_area.ts) only resets role/aria-label inside the isVisible branch:

if (!isVisible) {
  return;
}
...
tableElement.attr('role', 'menubar').attr('aria-label', ...); // or 'presentation' + removeAttr

Since _tableElement is reused across re-renders (only innerHTML/style get cleared), calling e.g. pivotGrid.option('fieldPanel.showRowFields', false) after the row area had fields leaves the table with the old role="menubar" + aria-label, because the function returns early before the reset code runs.

Fix: reset before the early return:

     if (!isVisible) {
+      tableElement
+        .attr('role', 'presentation')
+        .removeAttr('aria-label');
       return;
     }

@sjbur
sjbur disabled auto-merge July 17, 2026 11:28
Copilot AI review requested due to automatic review settings July 17, 2026 15:49
@aleksei-semikozov

Copy link
Copy Markdown
Contributor Author

Good catch, thanks! Fixed in 745ab50.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 43 out of 43 changed files in this pull request and generated 1 comment.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants